// 版权归Go作者所有。版权所有。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

// 包蒙蔽测试数据包含测试使用的功能，以便更轻松地使用
// 处理主要由于
// golang.org/issue/34986而必须蒙蔽的测试数据。
package obscuretestdata

import (
	"encoding/base64"
	"io"
	"os"
)

// DecodeToTempFile将命名文件解码到临时位置。
// 如果成功，则返回解码文件的路径。
// 调用方负责确保临时文件被删除。
func DecodeToTempFile(name string) (path string, err error) {
	f, err := os.Open(name)
	if err != nil {
		return "", err
	}
	defer f.Close()

	tmp, err := os.CreateTemp("", "obscuretestdata-decoded-")
	if err != nil {
		return "", err
	}
	if _, err := io.Copy(tmp, base64.NewDecoder(base64.StdEncoding, f)); err != nil {
		tmp.Close()
		os.Remove(tmp.Name())
		return "", err
	}
	if err := tmp.Close(); err != nil {
		os.Remove(tmp.Name())
		return "", err
	}
	return tmp.Name(), nil
}

// ReadFile读取命名文件并返回其解码内容。
func ReadFile(name string) ([]byte, error) {
	f, err := os.Open(name)
	if err != nil {
		return nil, err
	}
	defer f.Close()
	return io.ReadAll(base64.NewDecoder(base64.StdEncoding, f))
}
